1994.05.22 Y.SAK アニメーション制御 (Bac) 構文説明書 Display Bitmap (DspBmp.exe) のアニメーション制御 (Bac) では、制御構造を 利用して、 ○bmp bcs bca pca ファイルの表示 ○選択メッセージの表示による分岐 ○マウスクリックによる分岐 ○セーブデータによる分岐 ○ini ファイルの更新 ○ファイルのコピー ○ファイルの圧縮 などができます。 Bac 制御ファイルは、bmp bcs bca と同様に Display Bitmap でオープンします。 尚、Bac ファイルは、ただのテキストなので Editor などで作成します。 Dsp_Bmp コマンドで使用できる Pca ファイルは、単体のアニメーションを定義 したものです。 構文は、Bca ファイルと同一ですが、Nol_Set コマンドを省略して定義できます。 ■Display Bitmap のコマンドラインパラメタ DspBmp.exe filename /SHOW-HIDE |_ HIDE 非表示起動 MIN アイコン化起動 コマンドラインで表示パラメタを指定できます。 ■ファイル名の規約 アニメーション制御 (Bac) ファイルの拡張子は、必ず bac として下さい。 ■構文の規約 構文に大文字小文字の区別はなく、認識不可能な文字はすべて注釈として解釈 しています。 また、スペースには半角を必ず使用して下さい。 尚、ハードタブを使用したときの動作は保証できません。 (構文解析が、めちゃあまいのでご注意下さい。) ○注釈は原則としてキーワード Bac data の前にのみ書くことができます。 ○途中に注釈をどうしてもいれたい場合は、コマンドとして認識されるアルフ ァベットがないように日本語で書きます。 ○アニメーション制御は、Bac data 以降に書きます。 ○Skip...End_Skip Do...Loop If_???? then...End_If ブロックは、ネスト して使用できます。 ○Do や Call は、40 レベルまで使用できます。 ○構文の最大は 2000 ステップ(ラベル + コマンド)です。 ■コマンド説明 Bac Data |_ すべてのコマンドに先だって必ず記述されていなければなりません。 Show_Hide |_ Display Bitmap を非表示にします。 Show_Normal |_ Display Bitmap を通常表示にします。 Set_SelNo Sel1 | |_ NULL | Sel1 | Sel2 | Sel3 | Sel4 | Sel5 |_ If_SEL? を真にします。(NULL は、すべてを偽にします。) Set_IDCD IDOK | |_ IDOK | IDCANCEL | IDYES | IDNO |_ If_ID?? を真にします。 Set_Flag? TRUE | | |_ TRUE (真) | | FALSE (偽) | |_ 0 - 9 |_ If_Flag? を設定します。 Set_Ini キーワード データ | | |_ 文字列 | |_ 文字列 |_ ini ファイルに指定されたキーワードでデータをセットします。 データに " " を指定すると、NULL 指定となります。 保管される ini ファイル名は、Bac ファイル名の拡張子を ini にしたも のになります。 保管が正常にできれば If_IDOK に、そうでないときは If_IDCANCEL にな ります。(セットしたデータは、If_Ini Call_Ini で判定できます。) ReWrite_Cmd @ラベル 制御データ | | |_ 新アニメーション制御データ | |_ 20 バイト以内 |_ ラベル直後のアニメーション制御データを変更します。 パラメタの合計は 200 バイト以内でなくてはいけません。 このコマンドの使用には十分注意して下さい。 @ラベル |_ ラベルを定義します。(20 バイト以内) Chg_Label @旧ラベル @新ラベル | | |_ 20 バイト以内 | |_ 20 バイト以内 |_ ラベルを変更します。同一のラベルが複数ある場合は、先頭のものだけが 変更されます。 Dlt_Label @ラベル | |_ 20 バイト以内 |_ ラベルを削除します。同一のラベルが複数ある場合は、先頭のものだけが 削除されます。(実際には、@@ラベルにしています。) Und_Label @ラベル | |_ 20 バイト以内 |_ 削除したラベルを復活します。同一の削除ラベルが複数ある場合は、先頭 のものだけが復活されます。 Skip |_ Skip...End_Skip 間をスキップします。 Goto If_???? Call などで、Skip...End_Skip 間のラベルを呼びだすこと は可能です。 End_Skip |_ Skip の終わりを示します。 Do |_ Do...Loop のループを開始します。 Loop |_ Do へ戻ります。 Loop_Until_Sel1 | |_ Sel1 メッセージウィンドウの 1 番目が選択された | Sel2 メッセージウィンドウの 2 番目が選択された | Sel3 メッセージウィンドウの 3 番目が選択された | Sel4 メッセージウィンドウの 4 番目が選択された | Sel5 メッセージウィンドウの 5 番目が選択された | IDOK 『OK』 ボタンが押された | IDCANCEL 『キャンセル』 ボタンが押された | IDYES 『はい』 ボタンが押された | IDNO 『いいえ』ボタンが押された | Flag0 フラグ0 が TRUE | Flag1 フラグ1 が TRUE | Flag2 フラグ2 が TRUE | Flag3 フラグ3 が TRUE | Flag4 フラグ4 が TRUE | Flag5 フラグ5 が TRUE | Flag6 フラグ6 が TRUE | Flag7 フラグ7 が TRUE | Flag8 フラグ8 が TRUE | Flag9 フラグ9 が TRUE |_ 条件を満たしていれば、ループから出て次へ、満たしていなければ Do へ 戻ります。 ステータスは、Dsp_Msg で Sel? が設定され、Inp_Data Msg_Box Win_Exec Copy_File Write_Ini などで ID?? が設定されます。 Exit_Do |_ Do ループを抜けます。 Back_Do |_ Do へ戻ります。 Call @ラベル | |_ 20 バイト以内 |_ ラベルをコールします。 Call_Sel1 @ラベル | | |_ 20 バイト以内 | |_ Sel1 メッセージウィンドウの 1 番目が選択された | Sel2 メッセージウィンドウの 2 番目が選択された | Sel3 メッセージウィンドウの 3 番目が選択された | Sel4 メッセージウィンドウの 4 番目が選択された | Sel5 メッセージウィンドウの 5 番目が選択された | IDOK 『OK』 ボタンが押された | IDCANCEL 『キャンセル』 ボタンが押された | IDYES 『はい』 ボタンが押された | IDNO 『いいえ』ボタンが押された | Flag0 フラグ0 が TRUE | Flag1 フラグ1 が TRUE | Flag2 フラグ2 が TRUE | Flag3 フラグ3 が TRUE | Flag4 フラグ4 が TRUE | Flag5 フラグ5 が TRUE | Flag6 フラグ6 が TRUE | Flag7 フラグ7 が TRUE | Flag8 フラグ8 が TRUE | Flag9 フラグ9 が TRUE |_ 条件を満たしていれば、ラベルをコールします。 Return |_ Call の次へ戻ります。 Goto @ラベル | |_ 20 バイト以内 |_ ラベルへジャンプします。 If_Sel1 @ラベル | | |_ @ラベル (ラベルへ分岐) | | Exit_Do (Do...Loop を脱出) | | Back_Do (Do へ戻る) | | End (終了) | | then (End_If を使うとき) | |_ Sel1 メッセージウィンドウの 1 番目が選択された | Sel2 メッセージウィンドウの 2 番目が選択された | Sel3 メッセージウィンドウの 3 番目が選択された | Sel4 メッセージウィンドウの 4 番目が選択された | Sel5 メッセージウィンドウの 5 番目が選択された | IDOK 『OK』 ボタンが押された | IDCANCEL 『キャンセル』 ボタンが押された | IDYES 『はい』 ボタンが押された | IDNO 『いいえ』ボタンが押された | Flag0 フラグ0 が TRUE | Flag1 フラグ1 が TRUE | Flag2 フラグ2 が TRUE | Flag3 フラグ3 が TRUE | Flag4 フラグ4 が TRUE | Flag5 フラグ5 が TRUE | Flag6 フラグ6 が TRUE | Flag7 フラグ7 が TRUE | Flag8 フラグ8 が TRUE | Flag9 フラグ9 が TRUE |_ 条件を満たしていれば、ラベルへジャンプします。 ラベルの変わりに Exit_Do が指定されていると、Do ループを抜けます。 Back_Do は Do へ戻ります。 then の指定があるときは、条件を満たしていれば次の構文へ、そうでなけ れば End_If までスキップします。 End_If |_ If_???? then ブロックの終りを示します。 Wait_Mouse |_ マウスのクリックを待ちます。 クリックされた座標は、If_Mouse で判定できます。 このコマンドが実行されたときに、等倍表示以外のモードになっていると 自動的に等倍表示になります。 Call_Mouse xs ys xp yp @ラベル | | | | | |_ 20 バイト以内 | | | | |_ 高さ (ドット) | | | |_ 幅 (ドット) | | |_ 縦位置 (ドット) | |_ 横位置 (ドット) |_ マウスのクリック座標を判定して、ラベルをコールします。 xs ys xp yp を簡単に設定するには、CndBmp でクリック範囲を範囲選択し て、そのときの開始座標、幅高を転記するといいでしょう。 (等倍表示以外のモードではスキップされます。) If_Mouse xs ys xp yp @ラベル | | | | | |_ @ラベル (ラベルへ分岐) | | | | | Exit_Do (Do...Loop を脱出) | | | | | Back_Do (Do へ戻る) | | | | | End (終了) | | | | | then (End_If を使うとき) | | | | |_ 高さ (ドット) | | | |_ 幅 (ドット) | | |_ 縦位置 (ドット) | |_ 横位置 (ドット) |_ マウスのクリック座標を判定します。 xs ys xp yp を簡単に設定するには、CndBmp でクリック範囲を範囲選択し て、そのときの開始座標、幅高を転記するといいでしょう。 (等倍表示以外のモードではスキップされます。) Call_Ini キーワード データ @ラベル | | | |_ 20 バイト以内 | | |_ 文字列 | |_ 文字列 |_ ini ファイルのキーワードにセットされいてるデータとパラメタで指定さ れたデータが等しければ、ラベルをコールします。 比較される ini ファイル名は、Bac ファイル名の拡張子を ini にしたも のになります。 If_Ini キーワード データ @ラベル | | | |_ @ラベル (ラベルへ分岐) | | | Exit_Do (Do...Loop を脱出) | | | Back_Do (Do へ戻る) | | | End (終了) | | | then (End_If を使うとき) | | |_ 文字列 | |_ 文字列 |_ ini ファイルのキーワードにセットされいてるデータとパラメタで指定さ れたデータが等しいか判定します。 比較される ini ファイル名は、Bac ファイル名の拡張子を ini にしたも のになります。 End |_ アニメーション制御を終了します。 設定されていなくても、制御データがなくなれば終了します。 Set_BmpCaption テキスト | |_ 144 バイト以内 |_ ビットマップ表示ウィンドウのキャプションを変更します。 初期値は、『アニメーション制御』になっています。 Set_MsgCaption テキスト | |_ 144 バイト以内 |_ メッセージ表示ウィンドウのキャプションを変更します。 初期値は、『メッセージ』になっています。 Dsp_Bmp ファイル名 | |_ bca bcs bmp pca ファイル (拡張子要) |_ ビットマップをアニメーション表示します。 Pca ファイルは、単体のアニメーションを定義したものです。 構文は、Bca ファイルと同一ですが、Nol_Set コマンドを省略して定義で きます。 Mag_Bmp ファイル名 | |_ bcs bmp ファイル (拡張子要) |_ ビットマップをマージします。(Bca Data の Nol_Mag と同等) このコマンドを使用してもアニメーションは停止しません。 Msk_Bmp ファイル名 r g b | | | | |_ Blue 0 - 255 | | | |_ Green 0 - 255 | | |_ Red 0 - 255 | |_ bcs bmp ファイル (拡張子要) |_ ビットマップをマスクマージします。(Bca Data の Msk_Mag と同等) このコマンドを使用してもアニメーションは停止しません。 Set_Msg テキスト | |_ 60 バイト以内 |_ 表示メッセージを設定します。メッセージは連続 5 個まで設定できます。 テキストに " " を指定すると、NULL 行となります。 Dsp_Msg BEEP_ON | |_ BEEP_ON ビープオン | BEEP_OFF ビープオフ |_ Set_Msg で設定したメッセージを表示します。 Set_Msg で設定がなにもされてない場合は、『ここをクリックしてね...』 と設定されます。 クリックによって If_Sel1 If_Sel2 If_Sel3 If_Sel4 If_Sel5 になります。 Msg_Box BEEP_ON IDOK キャプション メッセージ | | | | |_ 144 バイト以内 | | | |_ 144 バイト以内 | | |_ IDOK 『OK』 | | IDOKCANCEL 『OK』 『キャンセル』 | | IDYESNO 『はい』『いいえ』 | |_ BEEP_ON ビープオン | BEEP_OFF ビープオフ |_ メッセージボックスを表示します。 パラメタの合計は 200 バイト以内でなくてはいけません。 押されたボタンによって If_IDOK If_IDCANCEL If_IDYES If_IDNO になり ます。 Inp_Box キャプション メッセージ データ | | | |_ 144 バイト以内 | | |_ 144 バイト以内 | |_ 144 バイト以内 |_ データをデフォルト入力文として、入力ダイアログボックスを表示します。 パラメタの合計は 200 バイト以内でなくてはいけません。 押されたボタンによって If_IDOK If_IDCANCEL になります。 Win_Show 表示パラメタ | |_ SW_HIDE 非表示 | SW_SHOWNORMAL 通常表示 | SW_SHOWMINIMIZED 最小表示 | SW_SHOWMAXIMIZED 最大表示 | SW_SHOWNOACTIVATE 通常表示(非アクティブ) | SW_SHOWMINNOACTIVE 最小表示(非アクティブ) |_ Win_Exec Win_Call で起動したウィンドウの表示方法を指定します。 デフォルトは SW_SHOWNORMAL になっており、設定した表示パラメタが Win_Exec Win_Call で使用されると SW_SHOWNORMAL のデフォルト値に自動 的に変更されます。 尚、SW_HIDE を使用するとそのプログラムの終了操作ができなくなります ので注意して下さい。 Win_Exec プログラム名 パラメタ | | |_ 144 バイト以内 | |_ 144 バイト以内 |_ プログラムを起動します。 パラメタだけの関連付けによる起動はできませんので注意して下さい。 パラメタの合計は 200 バイト以内でなくてはいけません。 起動に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 Win_Call プログラム名 パラメタ | | |_ 144 バイト以内 | |_ 144 バイト以内 |_ プログラムを Call 呼び出しします。 Call したプログラムが終了するまで次のステップは実行されません。 パラメタだけの関連付けによる起動はできませんので注意して下さい。 パラメタの合計は 200 バイト以内でなくてはいけません。 起動に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 ReWrite_Ini ファイル名 アプリキー キー データ | | | | |_ 144 バイト以内 | | | |_ 144 バイト以内 | | |_ 144 バイト以内 | |_ 144 バイト以内 |_ ini ファイルを書換えます。 データに " " を指定すると、NULL 指定となります。 ファイル名がフルパスでない場合は、設定されている PATH で検索します。 ini ファイルが見つからないときは If_IDCANCEL になります。 パラメタの合計は 200 バイト以内でなくてはいけません。 書換えに成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 Make_Dir ディレクトリ | |_ 144 バイト以内 |_ ディレクトリを作成します。 ディレクトリに [Inp_Box] を指定すると、Inp_Box で指定した ディレクトリを作成します。 作成に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 既にディレクトリが存在する場合も If_IDCAMNCEL になりますのでステー タスの判定はしない方がいいでしょう。 Copy_File [Inp_Box] コピー元ファイル名 コピー先ファイル名 | | | |_ 144 バイト以内 | | |_ 144 バイト以内 | |_ [Inp_Box] コピー先は Inp_Box で指定されたディレクトリ | [Windows] コピー先は Windows ディレクトリ | [System] コピー先は Windows の System ディレクトリ | [Copy] コピー先は コピー先ファイル名で指定 |_ ファイルをコピーします。 パラメタの合計は 200 バイト以内でなくてはいけません。 コピーに成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 (注意、この [] は省略を意味するものではなく、実際に記述するものです。) Cnd_File [Inp_Box] 圧縮元ファイル名 圧縮先ファイル名 | | | |_ 144 バイト以内 | | |_ 144 バイト以内 | |_ [Inp_Box] 圧縮元は Inp_Box で指定されたディレクトリ | [Windows] 圧縮元は Windows ディレクトリ | [System] 圧縮元は Windows の System ディレクトリ | [Copy] 圧縮元は 圧縮元ファイル名で指定 |_ ファイルを圧縮します。 パラメタの合計は 200 バイト以内でなくてはいけません。 圧縮に成功すると If_IDOK に、失敗すると If_IDCANCEL に なります。 このコマンドを使用する場合は、CmpFile.exe がカレントディレクトリか PATH で設定されているディレクトリになくてはなりません。 (注意、この [] は省略を意味するものではなく、実際に記述するものです。) Rst_File [Inp_Box] 復元元ファイル名 復元先ファイル名 | | | |_ 144 バイト以内 | | |_ 144 バイト以内 | |_ [Inp_Box] 復元先は Inp_Box で指定されたディレクトリ | [Windows] 復元先は Windows ディレクトリ | [System] 復元先は Windows の System ディレクトリ | [Copy] 復元先は 復元先ファイル名で指定 |_ ファイルを復元します。 パラメタの合計は 200 バイト以内でなくてはいけません。 復元に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 このコマンドを使用する場合は、CmpFile.exe がカレントディレクトリか PATH で設定されているディレクトリになくてはなりません。 (注意、この [] は省略を意味するものではなく、実際に記述するものです。) Dlt_File [Inp_Box] 削除ファイル名 | | |_ 144 バイト以内 | |_ [Inp_Box] 削除先は Inp_Box で指定されたディレクトリ | [Windows] 削除先は Windows ディレクトリ | [System] 削除先は Windows の System ディレクトリ | [Temp] 削除先は Windows の Temp ディレクトリ | [Delete] 削除先は 削除ファイル名で指定 |_ ファイルを削除します。 削除に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 (注意、この [] は省略を意味するものではなく、実際に記述するものです。) Set_CurDir [Inf] ファイル名 | | |_ 144 バイト以内 | |_ [Inf] 変更ディレクトリは、ファイルで示されている |_ カレントディレクトリを変更します。 変更に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 (注意、この [] は省略を意味するものではなく、実際に記述するものです。) Set_CurDir フルパス | |_ 144 バイト以内 |_ カレントディレクトリを変更します。 変更に成功すると If_IDOK に、失敗すると If_IDCANCEL になります。 Chk_VolID IDファイル名 テキスト | | |_ 144 バイト以内 | |_ 拡張子要 (144 バイト以内) |_ ボリュームをチェックします。 IDファイルの内容がテキストと等しいと If_IDOK に、そうでないときは If_IDCANCEL になります。 Rst_Win |_ Windows をリスタートします。 Read_Flag? | |_ 0 - 9 |_ フラグを ini ファイルから読込みます。 読込む ini ファイル名は、Bac ファイル名の拡張子を ini にしたものに なります。(ini ファイルが存在しない、または、キーワードが存在しない 場合は、FALSE がセットされます。) Save_Flag? | |_ 0 - 9 |_ フラグを ini ファイルに保管します。 保管される ini ファイル名は、Bac ファイル名の拡張子を ini にしたも のになります。 保管が正常にできれば If_IDOK に、そうでないときは If_IDCANCEL にな ります。 Save_Label @ラベル | |_ 20 バイト以内 |_ ラベルを ini ファイルに保管します。 ラベルに " " を指定すると、NULL 指定となります。 保管される ini ファイル名は、Bac ファイル名の拡張子を ini にしたも のになります。 保管が正常にできれば If_IDOK に、そうでないときは If_IDCANCEL にな ります。 Load_Bac ファイル名 | |_ bac ファイル (拡張子要) |_ 新しいアニメーション制御を読込み実行します。 以上